﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SoftwareConsulting.Interfaces.BasicEntities
{
    /// <summary>
    /// Интерфейс именованного списка
    /// </summary>
    public interface INamedList:IEnumerable<KeyValuePair<string,object>>
    {
        /// <summary>
        /// Возвращает/устанавливает пользовательский тэг
        /// </summary>
        object Tag { get; set; }
        /// <summary>
        /// Возвращает признак того, содержит ли список указанный элемент
        /// </summary>
        /// <param name="elementName"></param>
        /// <returns></returns>
        bool IsElementExists(string elementName);
        /// <summary>
        /// Возвращает признак того, содержит ли список указанное значение
        /// </summary>
        /// <param name="elementValue"></param>
        /// <returns></returns>
        bool IsValueExists(object elementValue);
        /// <summary>
        /// Возвращает число значений в списке
        /// </summary>
        int Count { get; }
        /// <summary>
        /// Обновляет имеющееся значение в списке
        /// </summary>
        /// <param name="elementName"></param>
        /// <param name="elementValue"></param>
        void UpdateValue(string elementName, object elementValue);
        /// <summary>
        /// Добавляет новое значение в список
        /// </summary>
        /// <param name="elementName"></param>
        /// <param name="elementValue"></param>
        void AddValue(string elementName, object elementValue);
        /// <summary>
        /// Возвращает значение из списка
        /// </summary>
        /// <param name="elementName"></param>
        /// <returns></returns>
        object GetValue(string elementName);
    }  
}
